Apply custom names to XDG dirs if possible
authorCosimo Cecchi <cosimoc@gnome.org>
Mon, 21 Jan 2013 22:38:34 +0000 (17:38 -0500)
committerCosimo Cecchi <cosimoc@gnome.org>
Mon, 21 Jan 2013 22:49:01 +0000 (17:49 -0500)
And make it possible to rename them

gtk/gtkbookmarksmanager.c
gtk/gtkbookmarksmanager.h
gtk/gtkplacessidebar.c

index 45acd476670f2d43c2557f9bd4bbf497370447d8..91ccd89c2969f42628b5656455e5c8536c533b04 100644 (file)
@@ -302,6 +302,16 @@ find_bookmark_link_for_file (GSList *bookmarks, GFile *file, int *position_ret)
   return NULL;
 }
 
+gboolean
+_gtk_bookmarks_manager_has_bookmark (GtkBookmarksManager *manager,
+                                     GFile               *file)
+{
+  GSList *link;
+
+  link = find_bookmark_link_for_file (manager->bookmarks, file, NULL);
+  return (link != NULL);
+}
+
 gboolean
 _gtk_bookmarks_manager_insert_bookmark (GtkBookmarksManager *manager,
                                        GFile               *file,
index 44db7b6ddee48d1cda57c5c92dd5f6b472510ec1..f2efd6577ba2ec117270f17442cbb577548a84bb 100644 (file)
@@ -69,6 +69,9 @@ gboolean _gtk_bookmarks_manager_reorder_bookmark (GtkBookmarksManager *manager,
                                                  gint                 new_position,
                                                  GError             **error);
 
+gboolean _gtk_bookmarks_manager_has_bookmark (GtkBookmarksManager *manager,
+                                              GFile               *file);
+
 gchar * _gtk_bookmarks_manager_get_bookmark_label (GtkBookmarksManager *manager,
                                                   GFile               *file);
 
index 7b2e5dcffc9da26ad68ce9d9544ba6c857e07b81..2a1003f0dcb598f9149f54346e7e38918215cadd 100644 (file)
@@ -559,7 +559,12 @@ add_special_dirs (GtkPlacesSidebar *sidebar)
                }
 
                root = g_file_new_for_path (path);
-               name = g_file_get_basename (root);
+
+               name = _gtk_bookmarks_manager_get_bookmark_label (sidebar->bookmarks_manager, root);
+               if (!name) {
+                       name = g_file_get_basename (root);
+               }
+
                icon = special_directory_get_gicon (index);
                mount_uri = g_file_get_uri (root);
                tooltip = g_file_get_parse_name (root);
@@ -1725,7 +1730,7 @@ check_popup_sensitivity (GtkPlacesSidebar *sidebar, PopupMenuData *data, Selecti
        gtk_widget_set_visible (data->add_shortcut_item, (info->type == PLACES_MOUNTED_VOLUME));
 
        gtk_widget_set_sensitive (data->remove_item, (info->type == PLACES_BOOKMARK));
-       gtk_widget_set_sensitive (data->rename_item, (info->type == PLACES_BOOKMARK));
+       gtk_widget_set_sensitive (data->rename_item, (info->type == PLACES_BOOKMARK || info->type == PLACES_XDG_DIR));
 
        check_visibility (info->mount, info->volume, info->drive,
                          &show_mount, &show_unmount, &show_eject, &show_rescan, &show_start, &show_stop);
@@ -1992,7 +1997,7 @@ rename_selected_bookmark (GtkPlacesSidebar *sidebar)
                                    PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
                                    -1);
 
-               if (type != PLACES_BOOKMARK) {
+               if (type != PLACES_BOOKMARK && type != PLACES_XDG_DIR) {
                        return;
                }
 
@@ -2969,6 +2974,10 @@ bookmarks_edited (GtkCellRenderer       *cell,
        gtk_tree_path_free (path);
 
        file = g_file_new_for_uri (uri);
+       if (!_gtk_bookmarks_manager_has_bookmark (sidebar->bookmarks_manager, file)) {
+               _gtk_bookmarks_manager_insert_bookmark (sidebar->bookmarks_manager, file, -1, NULL);
+       }
+
        _gtk_bookmarks_manager_set_bookmark_label (sidebar->bookmarks_manager, file, new_text, NULL); /* NULL-GError */
 
        g_object_unref (file);